package vv.lines.core.context;

import vv.lines.core.Ball;
import vv.lines.store.IChampionsStore;
import vv.lines.view.ViewFactory;

import java.util.Collections;
import java.util.List;

/**
 * @author vpotapenko
 */
public class LinesContext implements IContext {

    private int maxValue;
    private int rowCount;
    private int columnCount;
    private int clearableSize;
    private int maxChampion;
    private int generateCount;

    private int score;
    private List<Ball> nextBalls = Collections.emptyList();

    private ViewFactory viewFactory;
    private IChampionsStore championsStore;

    public int getMaxValue() {
        return maxValue;
    }

    public void setMaxValue(int maxValue) {
        this.maxValue = maxValue;
    }

    public int getRowCount() {
        return rowCount;
    }

    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
    }

    public int getColumnCount() {
        return columnCount;
    }

    public void setColumnCount(int columnCount) {
        this.columnCount = columnCount;
    }

    public int getClearableSize() {
        return clearableSize;
    }

    public void setClearableSize(int clearableSize) {
        this.clearableSize = clearableSize;
    }

    public int getMaxChampion() {
        return maxChampion;
    }

    public void setMaxChampion(int maxChampion) {
        this.maxChampion = maxChampion;
    }

    public void setGenerateCount(int generateCount) {
        this.generateCount = generateCount;
    }

    public int getGenerateCount() {
        return generateCount;
    }

    public ViewFactory getViewFactory() {
        return viewFactory;
    }

    public void setViewFactory(ViewFactory viewFactory) {
        this.viewFactory = viewFactory;
    }

    public IChampionsStore getChampionsStore() {
        return championsStore;
    }

    public void addScore(int score) {
        this.score += score;
    }

    public int getScore() {
        return score;
    }

    public void clearScore() {
        score = 0;
    }

    public void setNextBalls(List<Ball> nextBalls) {
        this.nextBalls = nextBalls;
    }

    public List<Ball> getNextBalls() {
        return nextBalls;
    }

    public void setChampionsStore(IChampionsStore championsStore) {
        this.championsStore = championsStore;
    }
}
